package com.chengyu.core.controller.http;

import com.chengyu.core.dto.http.MemberAccReduceCarbonInOrOutRequestDTO;
import com.chengyu.core.request.TblMemberReq;
import com.chengyu.core.saasopenai.SaasOpenApiConfig;
import com.chengyu.core.saasopenai.saaSRestTemplateConfig;
import com.chengyu.core.service.HttpRequestService;
import com.chengyu.core.service.ISceneRideCodeDataService;
import com.chengyu.core.service.TblMemberService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

/**
 * 测试请求平台接口
 */
@RestController
@RequestMapping("/platform")
@ApiIgnore
@Slf4j
@RequiredArgsConstructor
public class HttpTestController {

    private final HttpRequestService httpRequestService;
    private final SaasOpenApiConfig saasOpenApiConfig;
    private final saaSRestTemplateConfig restTemplateConfig;


    //用户信息
    @Autowired
    TblMemberService tblMemberService;
    //
    @Autowired
    ISceneRideCodeDataService iSceneRideCodeDataService;

    @GetMapping("/test")
    public void test(){
        MemberAccReduceCarbonInOrOutRequestDTO dto = new MemberAccReduceCarbonInOrOutRequestDTO();
//        MemberAccReduceCarbonInOrOutResponseDTO responseDTO = httpRequestService.getMemberAccReduceCarbonInOrOut(dto);
      //  log.info("请求结果:{}",responseDTO);
    }

    /**
     * 添加用户信息
     * 前端发送  phone uuid
     * 1.检查数据是否存在  select * from tbl_member where phone = #{phone}
     * 2.存在则 update tbl_member set  uuid =uuid where phone = phone
     * 3。不存在则插入数据 insert phone,uuid  tbl_member
     * 并插入数据表 成功则返回1
     * @param tblMemberReq
     * @return
     */
    @PostMapping("/user/updateInfo")
    public int insertOrUpdateMmember(@RequestBody TblMemberReq tblMemberReq){
        int req =  tblMemberService.insertTblMember(tblMemberReq);
        return req;
    }

//    /**
//     * 获取列表
//     * 1.前端发送 phone
//     * 2.获取列表中 select * from scene_ride_code_data where phone = #{phone} and status =0
//     * 3.包装结果集合   List<SceneRideCodeData>
//     * 4.返回结果
//     * @param sceneRideCodeData
//     * @return
//     */
//    @PostMapping("/user/getDataList")
//    public List<SceneRideCodeData> selectInfoList(@RequestBody SceneRideCodeData sceneRideCodeData){
//        List<SceneRideCodeData> req =  iSceneRideCodeDataService.queryList(sceneRideCodeData);
//        return req;
//    }
//
//    /**
//     * 一键领取
//     * 前端传递过来 参数  phone
//     * 小程序 获取数据 一键点击领取
//     * 1.应该写入日志
//     * 1.触发 update scene_ride_code_data set status = 1 where phone ,status =0
//     * 2.上行发送 到 上传用户领取低碳奖励记录
//     * 3.上行发送 到 用户减碳量出账
//     * 4.返回结果 成功、失败
//     * @param sceneRideCodeData
//     * @return
//     */
//    @PostMapping("/user/ClaimPoints")
//    public Long addClaimPoints(@RequestBody SceneRideCodeData sceneRideCodeData) throws Exception {
//        Long req =  iSceneRideCodeDataService.updateClaimPointsByPhone(sceneRideCodeData);
//        return req;
//    }
//
//
//
//    @PostMapping("/test/save")
//    public String testSave(@RequestBody MemberBehaviorRecordRequestDTO memberBehaviorRecordRequestDTO) throws Exception {
//        OpenApiHttpReq.OpenApiHttpReqBuilder builder = OpenApiHttpReq.builder()
//                .url(saasOpenApiConfig.getUrl() + "/scene/memberBehaviorRecord/save")
//                .httpMethod(HttpMethod.POST)
//                .header(ImmutableMap.of("TEST-HEADER", "testValue"))
//                .body(JSON.toJSONString(memberBehaviorRecordRequestDTO))
//                .timestamp(new Date());
//        ResponseEntity<String> res = SaasOpenApiHttpTool.callHttp(builder.build(), saasOpenApiConfig, restTemplateConfig.restTemplate());
//        // 得到一个完整的响应体
//        JSONObject entries = JSONUtil.parseObj(res);
//        log.debug("请求结果：{}",entries.getJSONObject("body"));
//        return res.toString();
//    }
//
//    @PostMapping("/test/out")
//    public String testOut(@RequestBody MemberAccReduceCarbonInOrOutRequestDTO memberAccReduceCarbonInOrOutRequestDTO) throws Exception {
//        OpenApiHttpReq.OpenApiHttpReqBuilder builder = OpenApiHttpReq.builder()
//                .url(saasOpenApiConfig.getUrl() + "/account/memberCarbonDetail/save")
//                .httpMethod(HttpMethod.POST)
//                .header(ImmutableMap.of("TEST-HEADER", "testValue"))
//                .body(JSON.toJSONString(memberAccReduceCarbonInOrOutRequestDTO))
//                .timestamp(new Date());
//        ResponseEntity<String> res = SaasOpenApiHttpTool.callHttp(builder.build(), saasOpenApiConfig, restTemplateConfig.restTemplate());
//        // 得到一个完整的响应体
//        JSONObject entries = JSONUtil.parseObj(res);
//        log.debug("请求结果：{}",entries.getJSONObject("body"));
//        return res.toString();
//    }
//
//
//
//    //    保存待领取的减碳量
//    @PostMapping("/scene/saveReid")
//    public void saveReid(@RequestBody SceneSaveReidDataReqDTO sceneSaveReidDataReqDTO) throws Exception {
//
//        httpRequestService.postReduceCarbonToTencent(sceneSaveReidDataReqDTO);
//    }
//
//
//
//
//    //    授权回调场景通知接口
//    @PostMapping("/scene/sceneEmpower")
//    public void sceneEmpower(@RequestBody SceneEmpowerReqDTO sceneEmpowerReqDTO) throws Exception {
//
//        httpRequestService.postTanTanCallBackResultToTencent(sceneEmpowerReqDTO);
//    }
}
